MAKEPUBLICKEY

Section: User Commands (1)
Updated: May 8, 1990
Index Return to Main Contents
 

NAME

makepublickey - create a public checking key  

FOR EXPERIMENTAL USE ONLY

 

SYNOPSIS

makepublickey [ -sN ] [ -pN ] [ -nN ] [ -bN ] [ -hMethod ] [ -dDir ] userKey userName  

DESCRIPTION

Makepublickey creates a public checking key from the given user key and a "randomly" generated machine key. The secret signing key actually used to generate signatures is derived by combining both the user key and the machine key. In this way, if the user selects a poor key, the machine key will still provide good security. If, on the other hand, a hacker penetrates the file system and reads the machine key, the user key remains unknown. Only if both the user key and the machine key are compromised will the secret key be compromised.

The computed public checking key is put in the public directory, and associated with the given userName. The randomly generated machine key is put into the private directory under the user's login id, with access by anyone other than the user denied. An attempt to create a new public key when the user already has an existing public key is an error. If the user wishes to change keys, it is first necessary to destroy the existing machine key with "destroyoldkey".

 

OPTIONS

The following options can be ignored by the first time user. Simply using the default options should produce satisfactory results.

-sN The security size is set to N. Default is 2 (64 bits of security). Greater security can be provided by setting this parameter to 3 (96 bits of security) or 4 (128 bits of security).

-pN The parameter size is set to N. Default is 2 (64-bit parameters). Increasing the parameter size does not significantly improve security.

-nN The size of internal sub-trees is set to N, where N must be a power of 2. Default is 32. Influences signature size and signing/checking time. Does not influence security.

-bN The number of bits per verifier is set to N. Default is 4. Don't ask what it does. Influences signature size and signing/checking time. Does not influence security.

-hMethod The one-way hash function method is set as specified. Options in the current implementation are: md4, snefru3, or snefru4. These correspond to the RSA Data Security, Inc. MD4 Message Digest Algorithm; the three-pass version of Snefru, and the four-pass version of Snefru respectively. Affects signing/checking time and security.

-dDir The directory into which the generated public key is placed is changed to Dir.

 

EXAMPLES

makepublickey XYZZY "Joe User"

Creates a public key and puts it into the default public key directory. Also creates a random machine key and puts it into the default private directory. The actual "secret signing key" is generated by combining the machine key and the user key.

makepublickey -dlocalDir -hmd4 XYZZY "M. Mouse"

Creates a public key and puts it into the local directory "localDir" (which must already exist). This is useful when the standard public directory is read only and public keys cannot be entered into it by unauthorized users. Also creates a random machine key and puts it into the private directory. Also specifies that MD4 is to be used as the one-way hash function. Thus, the security of signed messages rests on the security of MD4, and not on the security of any other one-way hash function. This allows the user to specify whatever one-way hash function they feel is most suited for their particular application. (The default hash algorithm is subject to change without notice. If you want a particular hashing algorithm, specify it. If you aren't sure what you want, just use the default).  

FILES

"makepublickey" expects to put the created public checking key into the public directory: /net/palain/rouge/pubdir. It creates two copies of the machine key in the two directories (on two distinct disk drives): /net/palain/rouge/privdir and /net/palain/jaune/privdir. It also initializes information in the auxilliary directory: /net/palain/rouge/auxdir.  

BUGS

The "userName" supplied by the user is not checked for authenticity. The "check" program prints out both the userName and the user id of the user who created the public key. The user id is verified (to the extent that Unix can verify any user...) The "userName" is not verified at the present time. While the user is "supposed" to enter his full name, in fact any string can be entered, including a false or misleading name (this IS an experimental system!) A more secure approach would be for a system administrator to verify the name (and other information) provided by the user before adding that information to the public directory. Only the authorized system administrator would be able to update or change the information in the public directory, thus insuring its correctness.

A second bug is that the secret key is echoed on the command line, rather than being entered from the terminal with echoing turned off.  

SEE ALSO

check(1) sign(1) destroyoldkey(1) dumpsig(1) recoverauxinfo(1)  

AUTHOR

Ralph C. Merkle Copyright (C) 1990 Xerox Corporation All Rights Reserved


 

Index

NAME
FOR EXPERIMENTAL USE ONLY
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
FILES
BUGS
SEE ALSO
AUTHOR

This document was created by man2html, using the manual pages.
Time: 00:33:35 GMT, March 30, 2022